package com.example.onlineanswer.model.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDateTime;

/**
 * 竞赛实体类
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("contest")
public class Contest extends BaseEntity {

    /**
     * 竞赛标题
     */
    @TableField("title")
    private String title;

    /**
     * 竞赛描述
     */
    @TableField("description")
    private String description;

    /**
     * 封面图片URL
     */
    @TableField("cover_image")
    private String coverImage;

    /**
     * 发起人ID
     */
    @TableField("creator_id")
    private Long creatorId;

    /**
     * 开始时间
     */
    @TableField("start_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime startTime;

    /**
     * 结束时间
     */
    @TableField("end_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime endTime;

    /**
     * 状态（0：待审核，1：已通过，2：已拒绝，3：已取消，4：已结束）
     */
    @TableField("status")
    private Integer status;

    /**
     * 参与人数限制（null表示无限制）
     */
    @TableField("participant_limit")
    private Integer participantLimit;

    /**
     * 当前参与人数
     */
    @TableField("current_participants")
    private Integer currentParticipants;

    /**
     * 审核意见
     */
    @TableField("review_comment")
    private String reviewComment;

    /**
     * 审核人ID
     */
    @TableField("reviewer_id")
    private Long reviewerId;

    /**
     * 审核时间
     */
    @TableField("review_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime reviewTime;

    /**
     * 是否启用证书（0：不启用，1：启用）
     */
    @TableField("certificate_enabled")
    private Boolean certificateEnabled;

    /**
     * 颁发证书数量（前几名）
     */
    @TableField("certificate_count")
    private Integer certificateCount;

    /**
     * 当前题目ID
     */
    @TableField("current_question_id")
    private Long currentQuestionId;
} 